// 多次查询购买方法
// 一共有4种硬币，面值分别为v0、v1、v2、v3，这个永远是确定的
// 每次去购物的细节由一个数组arr来表示，每次购物都是一次查询
// arr[0] = 携带v0面值的硬币数量
// arr[1] = 携带v1面值的硬币数量
// arr[2] = 携带v2面值的硬币数量
// arr[3] = 携带v3面值的硬币数量
// arr[4] = 本次购物一定要花多少钱
// 返回每次有多少种花钱的方法
// 1 <= v0、v1、v2、v3、arr[i] <= 10^5
// 查询数量 <= 1000
// 测试链接 : https://www.luogu.com.cn/problem/P1450
// 提交以下的code，可以直接通过

#include <bits/stdc++.h>

using namespace std;

const int LIMIT = 100000;
// dp表就是查询系统
// dp[i]表示当所有硬币无限制的情况下，花掉i元，方法数是多少
long dp[LIMIT + 1];
int value[4];
int cnt[4];
int n, s;

inline int read()
{
    char ch = getchar();
    int x = 0, f = 1;
    while(ch < '0' || ch > '9')
    {
        if(ch == '-') f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9')
    {
        x = 10 * x + ch - '0';
        ch = getchar();
    }
    return f * x;
}

// 时间复杂度O(LIMIT)
// 最基本的完全背包问题 + 空间压缩
// 完全背包在讲解074，不会的同学看一下
void build()
{
    dp[0] = 1;
    for(int i = 0; i < 4; ++i)
    {
        for(int j = value[i]; j <= LIMIT; ++j)
        {
            dp[j] += dp[j - value[i]];
        }
    }
}

// 时间复杂度O(15 * 4) -> O(1)
long query()
{
    long illegal = 0;
    // status -> 0001到1111
    for(int status = 1; status <= 15; ++status)
    {
        long t = s;
        // 遇到奇数个1，sigh变成1
        // 遇到偶数个1，sigh变成-1
        int sign = -1;
        for(int j = 0; j <= 3; ++j)
        {
            if(((status >> j) & 1) == 1)
            {
                t -= (cnt[j] + 1) * value[j];
                sign = -sign;
            }
        }
        if(t >= 0) illegal += sign * dp[t];
    }
    return dp[s] - illegal;
}

int main()
{
    for(int i = 0; i < 4; ++i) value[i] = read();
    n = read();
    build();
    while(n--)
    {
        for(int i = 0; i < 4; ++i) cnt[i] = read();
        s = read();
        printf("%ld\n", query());
    }

    return 0;
}